<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="app">
    <h1>组件事件</h1>
    <child @abc="fn"></child>
  </div>

  <script src="../Vue.js"></script>

  <script>
    const { createApp } = Vue;
    const Child = {
      // emits用于申明有哪些自定义事件可以调用
      // 如果写成数组的形式，那么写不写没区别
      // emits: ['abc'],

      // 写成对象就可以进行校验了
      // 主要校验的是函数的参数
      emits: {
        abc(n) {
          if (n) {
            return true
          } else {
            return false
          }
        }
      },
      template: `
        <div>
          <div>这是子组件</div>
        </div>
      `,
      mounted() {
        this.$emit("abc", 123)
      }
    }
    
    const app = createApp({
      data() {
        return {}
      },
      methods: {
        fn(n) {
          console.log("fn", n);
        }
      },
      components: {
        Child
      }
    })

    app.mount("#app")
  </script>
</body>
</html>